package com.hgyc.mom.tool.service;

import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hgyc.mom.common.print.PrintElementType;
import com.hgyc.mom.common.print.PrintTemplateDataField;
import com.hgyc.mom.common.print.PrintTemplateDataVO;
import com.hgyc.mom.tool.entity.PrintTemplate;
import com.hgyc.mom.tool.vo.PrintRequestVO;
import com.hgyc.mom.tool.vo.TemplateDataVO;

/**
 * 标签打印模板Service接口
 *
 * @author fwj
 * @since 2025-07-14
 */
public interface PrintTemplateService extends IService<PrintTemplate> {

    /**
     * 保存标签打印模板
     * @param printTemplate 标签打印模板
     */
    void saveTemplate(PrintTemplate printTemplate);

    /**
     * 更新标签打印模板
     * @param printTemplate 标签打印模板
     */
    void updateTemplate(PrintTemplate printTemplate);

    /**
     * 删除标签打印模板
     * @param ids 主键
     */
    void removeTemplate(List<Long> ids);

    /**
     * 获取物料打印模板
     * @param materialId 物料ID
     * @return 打印模板
     */
    List<PrintTemplate> getMaterialTemplate(Long materialId);

    /**
     * 设计打印模板
     * @param id 模板ID
     * @return 数据
     */
    TemplateDataVO design(Long id);

    /**
     * 打印
     * @param printRequestVO 打印请求参数
     * @return 打印数据
     */
    TemplateDataVO print(PrintRequestVO printRequestVO);

    /**
     * 获取打印模板数据源
     * @return 数据源
     */
    List<PrintTemplateDataVO> getTemplateDataSource();

    /**
     * 获取打印模板字段
     * @param templateId 模板ID
     * @return 模板字段
     */
    List<PrintElementType> getFieldByTemplate(Long templateId);

    /**
     * 保存hiprint模板
     * @param printTemplate 模板数据
     */
    void saveHiPrint(PrintTemplate printTemplate);
}
